Memory devices include both volatile memory devices (e.g., dynamic random access memory (DRAM), embedded dynamic random access memory (eDRAM), static random access memory (SRAM), etc.) and non-volatile memory devices (e.g., erasable programmable read only memory (EPROM), programmable read only memory (PROM), flash memory, electrically erasable programmable read only memory (EEPROM), nonvolatile random access memory (NVRAM), semiconductor-oxide-nitride-oxide-semiconductor (SONOS) memory, field avalanche metal oxide semiconductor (FAMOS) memory, etc.). With volatile memory devices, data in the memory is erased when power is not supplied to the device. In contrast, with non-volatile memory devices, stored data is retained even when power is not supplied to the device.
Many devices include non-volatile memory that is programmed by a programmer. To ensure that a non-volatile memory has been programmed properly, a verification step is used to confirm that the data was transferred from the programmer to the device's non-volatile memory elements without any errors.
FIG. 1A illustrates a block diagram showing a first conventional apparatus 100 for programming a non-volatile memory and verifying that the non-volatile memory was programmed successfully. The first conventional apparatus 100 includes a programmer 101 coupled with a device 105. The programmer includes a comparison logic 120, and the device includes a non-volatile memory 115. The programmer 101 sends a first data transmission 125 to the device 105 to program the non-volatile memory 115. Once the non-volatile memory 115 has been programmed, the device 105 sends a second data transmission 135 to the programmer 101. The second data transmission 135 includes the data that was programmed to the non-volatile memory 115, which should be the same as the data that was sent in the first data transmission 125. The comparison logic 120 then compares the data originally sent in the first data transmission 125 to the data received in the second data transmission 135. If the two sets of data match, then the non-volatile memory 115 was successfully programmed. If the two sets of data do not match, then the non-volatile memory 115 was not successfully programmed.
FIG. 1B illustrates a block diagram showing a second conventional apparatus 138 for programming a non-volatile memory and verifying that the non-volatile memory was programmed successfully. The second conventional apparatus 138 includes a programmer 145 coupled with a device 150. The device 150 includes a non-volatile memory 155 and a write state machine 160. The programmer 145 sends a first data transmission 165 to the device 150 to program the non-volatile memory 155. Once the non-volatile memory 155 has been programmed, the programmer 145 sends a second data transmission 170 to the device 150 for verification purposes. The second data transmission 170 includes the same data that was originally sent in the first data transmission 165. The write state machine 160 then compares the data originally sent in the first data transmission 165 to the data sent in the second data transmission 170. If the two sets of data match, then the non-volatile memory 155 was successfully programmed. If the two sets of data do not match, then the non-volatile memory 155 was not successfully programmed.
For both conventional apparatuses, each transmission of data is performed over a communications interface, such as cable or wireless link, that connects the programmer to the device. Also, for both conventional apparatuses, each group of data must be sent twice: once in a first data transmission, and once in a second data transmission. To program a non-volatile memory device, many such transmissions may be required, each transmission including a certain amount of data (e.g., 32 bytes, 64 bytes, etc.). The more data that is transmitted, the longer the transmission takes, and the larger the non-volatile memory that is being programmed, the more transmissions that are required.